package com.hzqy.service.user_center;

import com.hzqy.persistence.dao.user_center.UserCenterDao;
import com.hzqy.web.vo.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
public class UserCenterServiceBean {
	protected final Logger LOG = LoggerFactory.getLogger(getClass());
	@Resource
	private UserCenterDao userCenterDao;
	
	public List<UserIntegralVo> selectIntegralByServerId(String serverId) {
		return userCenterDao.selectIntegralByServerId(serverId);
	}
	
	/**
	 * 增值业务（音乐）中，用户定购产品包当月会送积分，但要在第二个月生效，所以第二个月需要将积分状态变更为新增
	 * 
	 * 当用户为0积分时，定购了一个产品包15元，第一个月为：
	 * 当月新增为0，当期调整为150，可用积分为0
	 * 第二个月为：
	 * 当月新增为150，当期调整为0，可用积分为150
	 * @return
	 */
	public int updateIntegralAdd() {
		return userCenterDao.updateIntegralAdd();
	}
	
	/**
	 * 增值业务（音乐）中，用户定购产品包当月会送积分，但要在第二个月生效，所以第二个月需要将积分状态变更为新增，第三个月变更为有效可用
	 * 
	 * 当用户为0积分时，定购了一个产品包15元，第一个月为：
	 * 当月新增为0，当期调整为150，可用积分为0
	 * 第二个月为：
	 * 当月新增为150，当期调整为0，可用积分为150
	 * @return
	 */
	public int updateIntegralAvailable() {
		return userCenterDao.updateIntegralAvailable();
	}
	
	public List<UserBillVo> selectUserBillByServerId(UserBillVo userBillVo) {
		return userCenterDao.selectUserBillByServerId(userBillVo);
	}
	
	public int selectUserBillByServerIdCounts(UserBillVo userBillVo) {
		return userCenterDao.selectUserBillByServerIdCounts(userBillVo);
	}
	
	public int selectUserBoxByServerIdCount(UserBoxVo userBoxVo) {
		return userCenterDao.selectUserBoxByServerIdCount(userBoxVo);
	}
	
	public List<CmContentVo> selectUserBoxByServerId(UserBoxVo userBoxVo) {
		return userCenterDao.selectUserBoxByServerId(userBoxVo);
	}

	public int selectUserBoxCatalogCountByServerid(UserBoxVo userBoxVo) {
		return userCenterDao.selectUserBoxCatalogCountByServerid(userBoxVo);
	}

	public List<CmCatalogVo> selectUserBoxCatalogInfoByServerid(UserBoxVo userBoxVo) {
		return userCenterDao.selectUserBoxCatalogInfoByServerid(userBoxVo);
	}
	
	/**
	 * 需要先查询当前用户是否已经收藏此内容，如已收藏则更新时间f_ubox_udate
	 * @param userBoxVo
	 * @return
	 */
	public int insertUserBox(UserBoxVo userBoxVo) {
		int count = userCenterDao.selectUserBoxByServerIdCount(userBoxVo);
		if(count <= 0)
			return userCenterDao.insertUserBox(userBoxVo);
		else
			return userCenterDao.updateUserBox(userBoxVo);
	}
	
	public int deleteUserBoxById(UserBoxVo userBoxVo) {
		return userCenterDao.deleteUserBoxById(userBoxVo);
	}
	
	public int insertIntegral(UserIntegralVo userIntegralVo){
		return userCenterDao.insertIntegral(userIntegralVo);
	}
}